package com.jintian.smart.kernel.core.annotation.orm;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;

/**
 * 用来标准一个查询类。 需改造自动拼SQL，而不是模板中 --@ if进行处理
 */
@Target({FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Condition {
    public static final int TYPE_GENERAL = 1;
    public static final int TYPE_VALUE_BETWEEN = 2;
    public static final int TYPE_IN = 3;

    String column() default "";

    /**
     * 中文名字
     *
     * @return
     */
    String label() default "";

    String table() default "";

    /**
     * 查询类型,常规，范围，字典，前端自定义
     *
     * @return
     */
    int type() default TYPE_GENERAL;

    /**
     * 是否显示在查询界面上
     *
     * @return
     */
    boolean display() default false;

    /**
     * 模糊查询，仅仅针对TYPE_GENERAL
     *
     * @return
     */
    boolean fuzzy() default false;

    /**
     * 字典的主键，比如,"user_state"
     *
     * @return
     */
    String dict() default "";

    /* 描述 */
    String comment() default "";

    /**
     * 控件名字，如组织机构面板
     *
     * @return
     */
    String control() default "";

    /**
     * 顺序，值越小，排在前面
     *
     * @return
     */
    int order() default 0;

    /* 控件组 */
    String group() default "";

    /**
     * 自定义条件
     *
     * @return
     */
    String custom() default "";

    boolean ignoreEmptyValue() default true;

}
